package org.yelongframework.excel.data.fill.excel;

import java.util.List;
import java.util.Map;

import org.yelongframework.excel.data.fill.sheet.SheetDataFillException;
import org.yelongframework.excel.data.fill.sheet.SheetDataFillScheme;
import org.yelongframework.excel.data.fill.sheet.manager.SheetDataFillerManager;
import org.yelongframework.excel.sheet.ExcelSheet;
import org.yelongframework.excel.workbook.ExcelWorkbook;

/**
 * 工作表批量数据填充
 * 
 * @since 1.0.0
 */
public interface ExcelDataFiller {

	// ==================================================工作薄==================================================

	/**
	 * 数据填充。针对一个工作薄的多个工作表的多个方案填充
	 * 
	 * @param excelWorkbook          工作薄
	 * @param sheetDataFillSchemeMap 工作表索引与数据填充方案映射
	 */
	void dataFill(ExcelWorkbook excelWorkbook, Map<Integer, List<SheetDataFillScheme>> sheetDataFillSchemeMap)
			throws SheetDataFillException;

	// ==================================================工作表==================================================

	/**
	 * 数据填充
	 * 
	 * @param excelSheet          工作表
	 * @param sheetDataFillScheme 数据填充方案
	 */
	void dataFill(ExcelSheet excelSheet, SheetDataFillScheme sheetDataFillScheme) throws SheetDataFillException;

	/**
	 * 数据填充。针对一个工作表的多个方案填充
	 * 
	 * @param excelSheet              工作表
	 * @param sheetDataFillSchemeList 数据填充方案集合
	 */
	void dataFill(ExcelSheet excelSheet, List<SheetDataFillScheme> sheetDataFillSchemeList)
			throws SheetDataFillException;

	// ==================================================工作表数据填充器管理器==================================================

	/**
	 * @return 工作表数据填充器管理器
	 */
	SheetDataFillerManager getSheetDataFillerManager();

}
